package pokeronlab_2014.mcts;

import pokeronlab_2014.SVMClassifierData;

/**
 * A játék állapotától függően csúcsot előállító osztály 
 * 
 * @author András
 *
 */
public class NodeFactory {
	/**
	 * Visszaad egy gyereket az adott szülőcsúcshoz.
	 * 
	 * @param parent A gyerek szülője.
	 * @return Az elkészült gyerek.
	 */
	TreeNode getNode(TreeNode parent){
		TreeNode ret = null;
		//TODO a statekat beállítani
		if(parent.state.isEndOfTurn()){
			ret = new CardNode(parent);
		}else if(parent.state.isOurTurn()){
			ret = new HeroNode(parent);
		}else{
			ret = new VillainNode(parent);
		}
		ret.parent = parent;
		return ret;
	}
	
	/**
	 * Jelenleg csak a szimuláció miatt másol!
	 * 
	 * @param original Eredeti csúcs.
	 * @return Egy másolat a csúcsról.
	 */
	TreeNode copyNode(TreeNode original){
		TreeNode ret = null;
		if(original instanceof HeroNode){
			ret = new HeroNode(original);
		}else if(original instanceof VillainNode){
			ret = new VillainNode(original);
		}else if(original instanceof CardNode){
			ret = new CardNode(original);
		}
		return ret;
	}
}
